package tcp_net.mail.pop3.commands;

import tcp_net.mail.pop3.*;
import tcp_net.Command;
import tcp_net.mail.MailBoxFileManager;
import tcp_net.mail.pop3.commands.debug.DebugInfo;
import java.util.List;
import java.util.ArrayList;

/**
	This class provides an abstract command at POP3 level
	@author J. Okuno
*/
public abstract class POP3Command implements Command
{
	/**
		A POP3 reply message
	*/
	protected POP3ReplyMessage reply; 
	
	/**
		A mailbox file manager
	*/
	protected MailBoxFileManager manager;
	
	/**
		A list of reply messages
	*/
	protected List<String> reply_msgs;
	
	/**
		Init the class
		@param man a mailbox file manager
	*/
	public POP3Command(MailBoxFileManager man)
	{ 
		manager = man;
		reply_msgs = new ArrayList<String>();
	}
	
	/**
		Init the class
	*/
	public POP3Command()
	{
		this(null);
	}
	
	/**
		This method executes a defined command
		@return a list of reply messages in a string format
	*/
	public abstract List<String> execute();
}

/* POP3 Commands classes */